﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ICalendar
{
  
    public class ReservedNames
    {
        public const string ParameterAlternateTextRepresentation = "ALTREP";
        public const string ParameterCommonName = "CN";
        public const string ParameterCalendarUserSpecified = "CUTYPE";
        public const string ParameterDelegatedFrom = "DELEGATED-FROM";
        public const string ParameterDelegatedTo = "DELEGATED-TO";
        public const string ParameterLanguage = "LANGUAGE";

        //public const string PropertyParameters = "altrep | cn | cutype | delegated-from | delegated-to | dir | encoding | fmttype | fbtype | language | member | partstat | range | related | reltype | role | rsvp | sent-by | tzid | value";
        public string[] PropertyParameters = new[] {
        ParameterAlternateTextRepresentation,
        ParameterCommonName,
        ParameterCalendarUserSpecified,
        ParameterDelegatedFrom,
        ParameterDelegatedTo,
        "dir",
        "encoding",
        "fmttype",
        "fbtype",
        ParameterLanguage,
        "member",
        "partstat",
        "range",
        "related",
        "reltype",
        "role",
        "rsvp",
        "sent-by",
        "tzid",
        "value"
        };
        public const string PropertyValueDataTypes = "binary | boolean | cal-address | date | date-time | duration | float | integer | period | recur | text | time | uri | utc-offset";
        public const string CalendarComponents = "vevent | vtodo | vjournal | vfreebusy | vtimezone | valarm";
        public const string CalendarProperties = "calscale | method | prodid | version";
        public const string DescriptiveComponentProperties = "attach | categories | class | comment | description | geo | location | percent-complete | priority | resources | status | summary";
        public const string DateAndTimeComponentProperties = "completed | dtend | due | dtstart | duration | freebusy | transp";
        public const string TimeZoneComponentProperties = "tzid | tzname | tzoffsetfrom | tzoffsetto | tzurl";
        public const string RelationshipComponentProperties = "attendee | contact | organizer | recurrence-id | related-to | url | uid";
        public const string RecurrenceComponentProperties = "exdate | exrule | rdate | rrule";
        public const string AlarmComponentProperties = "action | repeat | trigger";
        public const string ChangeManagementComponentProperties = "created | dtstamp | last-modified | sequence";
        //public static readonly string[] AttendeeParameters = new[] {ReservedNames.ParameterCalendarUserSpecified, "MEMBER","ROLE","PARTSTAT","RSVP","DELEGATED-TO", "DELEGATED-FROM", "SENT-BY", "CN","DIR", "LANGUAGE"};
        //public const string AllReservedNames = string.Format("{0} | {1} | {2} | {3} ", PropertyParameters, PropertyValueDataTypes, CalendarComponents, CalendarProperties, DescriptiveComponentProperties, DateAndTimeComponentProperties, TimeZoneComponentProperties, RelationshipComponentProperties, RecurrenceComponentProperties, 
        
        //altrep,
        //cn,
        //cutype,
        //delegated-from,
        //delegated-to,
        //dir,
        //encoding,
        //fmttype, 
        //fbtype,
        //language,
        //member,
        //partstat,
        //range,
        //related,
        //reltype,
        //role,
        //rsvp,
        //sent-by,
        //tzid,
        //value
    }

}
